export {};
/* 
    interface 用来描述对象，与 type 是一样

    早期时候，并没有 type，使用 interface
    type：不仅可以描述对象，还可以描述其他类型
    interface： 仅仅可以描述对象（数组都不行，严格意义上的对象）,在过去开发的框架上，使用比较多

    语法上有点不同, type 有等于号
     type 类型 = {对象的描述;}
     interface 类型 {对象的描述;}
*/

type ObjType = {
  name: string;
  age: number;
  gender?: number;
  //   sayHi(): void;
  sayHi: () => void;
  sayHello: () => void;
  add: (a: number, b: number) => number;
};

interface Obj {
  name: string;
  age: number;
  gender?: number;
  //   sayHi(): void;
  sayHi: () => void;
  sayHello: () => void;
  add: (a: number, b: number) => number;
}

let obj: Obj = {
  name: 'zs',
  age: 20,

  sayHi() {},
  sayHello: () => {},

  add: (a, b) => {
    return a + b;
  },
};

console.log('obj.gender -----> ', obj.gender);
obj.sayHello();
